package com.day12;

/**
 * final:最终的
 * <p>
 * 1.final可以用来修饰的结构:类,方法，变量
 * <p>
 * 2.final用来修饰一个类,这个类不能被继承
 * 比如:String类，System类，StringBuffer类
 * <p>
 * 3.final修饰方法:
 * 表明此方法不能被重写
 * <p>
 * 4.final修饰变量:
 * 修饰的变量变为常量，不可变的
 *      4.1final修饰属性，可以考虑赋值的位置有:显示初始化，代码块中初始化，构造器中初始化。
 *
 * 5.final修饰局部变量:
 *      5.1 尤其是final修饰形参时，表明形参是一个常量。当我们调用此方法时，给常量形参赋一个实参，一旦赋值以后，就只能在方法体内使用形参，但不能重新赋值。
 *
 * static final 用来修饰一个属性：全局常量
 */
public class FinalTest {


    final int width = 10;

    public void doWidth(final int a) {

        System.out.println(a);
    }

    public static void main(String[] args) {
        new FinalTest().doWidth(10);
        new FinalTest().doWidth(11);

        FinalTest finalTest = new FinalTest();
        finalTest.doWidth(10);
        finalTest.doWidth(11);

        if (new PersonDemo() instanceof FinalTest){
            System.out.println("demo");
        }
    }

}

final class PersonDemo extends FinalTest{

}